The architecture of the World Wide Web (the Web) follows a conventional client-server model. The terms “client” and “server” are used to refer to a computer's general role as a requester of data (the client) or provider of data (the server). Web clients and Web servers communicate using a protocol such as Hypertext Transfer Protocol (HTTP). In the Web environment, Web browsers reside on clients and Web documents (pages) reside on servers. The client-server model is used to communicate information between clients and servers. Web servers are coupled to the Internet and respond to document requests from Web clients. When a user selects a document by submitting its Uniform Resource Locator (URL), a Web browser, such as Netscape Navigator opens a connection to a server and initiates a request (e.g., an HTTP get) for the document. The server delivers the requested document, typically in the form of a static text document coded in a standard markup language such as Hypertext Markup Language (HTML). The document is static in the sense that it exists in a constant state and each user that requests the document will see more or less the same content (subject to differences in browser functionality).
Currently, when an HTML document needs to be dynamically modified for a particular user, the Web server will solicit required data from the user by way of an HTML form. Upon receipt of the required data, the Web server performs the customization of the requested HTML document. HTML files are typically dynamically generated/modified by programs residing on Web servers called CGI scripts. Common Gateway Interface (CGI) is a simple protocol that facilitates communication of information entered into HTML forms to CGI scripts. CGI scripts are commonly used to access legacy information systems such as existing documents or databases. For example, a CGI script might query a database using the information from an HTML form and output the results of the query to the client. In other instances, CGI scripts may simply insert the information provided in the HTML form directly into a requested HTML document.
This conventional method of customizing HTML documents for a particular user is illustrated by FIG. 1. In FIG. 1, a client 105 is coupled to a server 110 through the Internet 130. The client communicates with the server 110 via a browser 125 executing on the client 105. The server 110 includes an HTTP interface 115 for recognizing and processing HTTP requests and a Common Gateway Interface (CGI) script 120 for processing information from HTML form 149.
In this example, when the client 105 sends a request for a document, the server transmits an encoded HTML document representing HTML form 149. The browser 125 receives the encoded HTML document and renders HTML form 149 on the display (not shown). The HTML form 149 includes two text entry fields 146 and 147 and a submit button 148. After the local user has completed HTML form 149 and selected the submit button 148, the values entered into text fields 146 and 147 are transmitted by the browser 125 to the server 110. Upon receiving the values for text fields 146 and 147, the server 110 executes CGI script 120 which dynamically generates output, typically representing an HTML document, based upon the values received. The output of CGI script 120 is received by the browser 125 and displayed in the form of a tailored output 170. In this manner, the server 110 tailors a document for a particular user.
The current use of HTML forms and CGI scripts to tailor HTML documents is inefficient and undesirable under many circumstances. For example, to accommodate the current method of tailoring HTML documents, large amounts of data must sometimes be transmitted from the client to the server. Often the very same information is required to customize various pages of the Web, thus requiring the user to continually retype such information. Also, it should be appreciated that Web servers are optimized for transferring files rather than running CGI scripts. Moreover, a user may not want to transmit certain private information such as the user's name, social security number, account numbers, and other sensitive information over the Internet.
In light of the foregoing, it is desirable to provide a mechanism that allows the client to dynamically modify the content of an HTML document locally based upon information stored on the client system. It is further desirable to provide a mechanism for incorporating private information into an HTML document received from a remote server without the user having to risk transmitting the private information through the Internet to the remote server.